using System;
using System.Collections.Generic;

[Serializable]
public class MaterialShaderCycles
{
    public string m_MaterialName;
    public string m_Bound;
    public float m_Cycles;
}

[Serializable]
public class ReasonCullingFail
{
    public string m_RelPath;
    public List<string> m_Reasons = new List<string>();
}

[Serializable]
public struct FXPerformanceFrameData
{
    public float m_Time;
    public float m_Value;

    public FXPerformanceFrameData(float key, float value)
    {
        m_Time = key;
        m_Value = value;
    }
}

[Serializable]
public class FXPerformanceData
{
    public string m_FXName;
    public string m_GPUArchitecture;
    public float m_CameraWidth;
    public float m_CameraHeight;
    public float m_Duration;
    // public bool m_IsLoop;
    public long m_ObjNativeSize;
    public string m_ObjNativeSizeTxt;
    public long m_TextureSize;
    public int m_TextureCount;
    public string m_TextureSizeTxt;
    public string m_TextureCountTxt;
    public List<MaterialShaderCycles> m_MaterialCycles = new List<MaterialShaderCycles>();
    public List<ReasonCullingFail> m_ReasonCullingFails = new List<ReasonCullingFail>();

    public List<FXPerformanceFrameData> m_Pixels = new List<FXPerformanceFrameData>();
    public List<FXPerformanceFrameData> m_TotalShaderCycles = new List<FXPerformanceFrameData>();
    public List<FXPerformanceFrameData> m_TotalOverdraw = new List<FXPerformanceFrameData>();
    public List<FXPerformanceFrameData> m_ParticleSystemCounts = new List<FXPerformanceFrameData>();
    public List<FXPerformanceFrameData> m_RendererCounts = new List<FXPerformanceFrameData>();
    public List<FXPerformanceFrameData> m_ParticleCounts = new List<FXPerformanceFrameData>();
    public List<FXPerformanceFrameData> m_BatchCounts = new List<FXPerformanceFrameData>();

    public List<string> m_PerfWarnings = new List<string>();
}